home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / p063b9s.zip / TOKENRES.PAS < prev   
Pascal/Delphi Source File  |  1993-09-26  |  2KB  |  75 lines

  1. USES OpRoot, OpString;
  2.  
  3.   PROCEDURE ParseFile;
  4.   VAR
  5.     f    : Text;
  6.     Line : LongInt;
  7.     StrDict : StringDictPtr;
  8.     Lib     : OpLibrary;
  9.     ResName, s, Token : String;
  10.     l  : LongInt;
  11.   BEGIN
  12.     Assign(f, ParamStr(1));
  13.     Reset(f);
  14.     IF IOResult=0 THEN
  15.     BEGIN
  16.       Line:=1; StrDict:=NIL;
  17.       Lib.Init('PORTAL.RES', SOpen, 10240, 'POP-RES');
  18. (*      Lib.Create('TEST.RES',  {SCreate,} 4096, 'POP-RES', 32);*)
  19.       Lib.RegisterHier(StringDictStream);
  20.       WHILE Not EoF(f) DO
  21.       BEGIN
  22.         Write(Line,#13);
  23.         ReadLn(f, s);
  24.         IF (Length(s)>0) AND (Copy(s, 1, 1)<>';') THEN
  25.         BEGIN
  26. {         s:=StUpCase(s);}
  27.           IF Copy(s, 1, 9)='#KEYWORDS' THEN
  28.           BEGIN
  29.             IF StrDict<>NIL THEN
  30.             BEGIN
  31.               Lib.PutEntry(ResName, StrDict^);
  32.               Dispose(StrDict, Done);
  33.             END;
  34.             New(StrDict, Init);
  35.             Delete(s,1,9); s:=Trim(s);
  36.             IF Str2Long(s, l) THEN
  37.             BEGIN
  38.               ResName:='TOK'+LongIntForm('@@@',l);
  39.             END;
  40.           END ELSE
  41.           BEGIN
  42.             Token:=Copy(s, 1, Pos(' ',s)-1);
  43.             Delete(s, 1, Length(Token)); s:=Trim(s);
  44.             IF Str2Long(s, l) THEN StrDict^.Add(Token, l);
  45.  
  46. {            Begin
  47.               if not strdict^.member(Token, l) then
  48.               else
  49.                 Writeln('Duplicate : ',Token,' # ',l);
  50.             end; }
  51.           END;
  52.         END;
  53.         Inc(Line);
  54.       END;
  55.       IF StrDict<>NIL THEN
  56.       BEGIN
  57.         Lib.PutEntry(ResName, StrDict^);
  58.         Dispose(StrDict, Done);
  59.       END;
  60.       WriteLn;
  61.       Close(f);
  62.     END ELSE
  63.       WriteLn('Can''t open: ',ParamStr(1));
  64.   END;
  65.  
  66. BEGIN
  67.   WriteLn('Token file parser for Portal of Power v');
  68.   WriteLn('(c) Copyright 1993 by The Portal Team');
  69.   IF ParamCount=1 THEN
  70.     ParseFile
  71.   ELSE
  72.     WriteLn('  USAGE: TokenRes FileName');
  73.   WriteLn;
  74. END.
  75.